Various forms of storage systems are used today. These forms include direct attached storage (DAS) network attached storage (NAS) systems, storage area networks (SANs), and others. Network storage systems are commonly used for a variety of purposes, such as providing multiple clients with access to shared data, backing up data and others. A storage system typically includes at least one computing system executing a storage operating system for storing and retrieving data on behalf of one or more client computing systems (“clients”). The storage operating system stores and manages shared data containers in a set of mass storage devices.
Storage systems are being used extensively in virtual environments where a physical resource is time-shared among a plurality of independently operating processor executable virtual machines. Typically, storage space is presented to a virtual machine as a virtual hard disk (VHD) file. A storage drive (for example, C:\) is then presented to a client via a user interface within a virtual machine context. The client can use the storage drive to access storage space to read and write information.
Cloud computing with virtual machines is becoming popular today. Cloud computing means computing capability that provides an abstraction between a computing resource and its underlying technical architecture (e.g., servers, storage, networks), enabling convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction.
In the cloud computing environment, storage space is made available to clients by a cloud provider for storing information via a file system, which is software that keeps track of all of the data stored and manages read/write operations on the data. The term “file system” can also be used to refer to the actual structure of the stored data. The files within the file system are generally stored within a hierarchy of directories. A directory is simply a software-based entity which can contain information, such as one or more files, other directories and/or other data, and which is used to organize stored information.
Despite the overall improvement in the reliability of data storage systems, particularly in cloud computing, they sometimes fail and it remains necessary to implement methods to repair said data systems. In a typical system, a backup agent executing on a primary computer system creates a copy of the data system to a secondary computer system where it is stored. Accordingly, if data loss occurs or specific data fails at the primary system, the data system is completely rebuilt, block-by-block based on the legal rules of the data system until the data loss or failed data is located, localized and repaired. This is a common technique that ensures all the data located in the initial failed data structure are inserted into the new data structure correctly formatted based on the legal rules used to insert the data. However, where the damage is relatively small, i.e. a block that cannot be loaded, or a bug exists in the code that causes a record to be inserted in the wrong place, completely replacing the entire data system is an ineloquent and excessive response that requires a large amount of disk read operations (“I/O”) and unnecessarily consumes time and resources.
The present disclosure is susceptible of various modifications and alternative forms, and is not limited to the embodiments and aspects presented herein by way of example only and described with reference to the accompanying drawings.